package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	client := &http.Client{}
	url := "http://www.baidu.com"

	// NewRequest函数有三个基本的参数，NewRequest(method, urlStr string, body io.Reader)第一个是请求的类型，GET, POST, PUT, etc.
	// 要设成大写的形式。第二个参数是请求要访问的url，第三个参数是请求的body中的内容，需要是一个io.Reader的类型。
	request, err := http.NewRequest("GET", url, nil)
	if err != nil {
		panic(err)
	}

	// 注意io.Reader的接口中是一个Read方法，实现了Read方法的类型应该都可以作为io.Reader来返回,Read(p []byte) (n int, err error)
	// 函数具体的功能就是读入len(p)长度的内容到p中，返回读入的长度以及错误信息。
	// 通常是采用strings.NewReader函数，将一个string类型转化为io.Reader类型，或者bytes.NewBuffer函数，将[]byte类型转化为io.Reader类型。

	// 请求头设置, body or token
	//request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	//request.Header.Set("Authorization", "qwertyuiopasdfghjklzxcvbnm1234567890")

	response, err := client.Do(request)
	if err != nil {
		panic(err)
	}

	stdout := os.Stdout
	_, err = io.Copy(stdout, response.Body)

	status := response.StatusCode
	fmt.Println(status)

}
